home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / PowerPlant / AGA Classes 1.2 / Utilities / LAGASeparator.cp < prev    next >
Text File  |  1996-06-30  |  4KB  |  134 lines

  1. // ===========================================================================
  2. //    LAGASeparator.cp
  3. // ===========================================================================
  4. //    “Apple Grayscale Appearance” compliant separator
  5. //    Copyright © 1996 Chrisoft (Christophe ANDRES)  All rights reserved.
  6. //
  7. //    You may use this source code in any application (commercial, shareware, freeware,
  8. //    postcardware, etc), but not remove this notice (no need to acknowledge the use of
  9. //    this class in the about box)
  10. //    You may not sell this source code in any form. This source code may be placed on 
  11. //    publicly accessable archive sites and source code disks. It may not be placed on 
  12. //    profit archive sites and source code disks without the permission of the author, 
  13. //    Christophe ANDRES.
  14. //    
  15. //        This source code is distributed in the hope that it will be useful,
  16. //        but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. //        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  18. //
  19. //    If you make any change or improvement on this class, please send the improved/changed
  20. //    version to : chrisoft@calva.net or Christophe ANDRES
  21. //                                     20, rue Prosper Mérimée
  22. //                                     67100 STRASBOURG
  23. //                                     FRANCE
  24. //
  25. // ===========================================================================
  26. //    LAGASeparator.h            <- double-click + Command-D to see class declaration
  27. //
  28. //    LAGASeparator is my implementation of the “Apple Grayscale Appearance for System 7.5”
  29. //        Separator. Whether the Pane will be a horizontal or vertical separator is determined
  30. //        by the greatest of width or height.
  31. //
  32. //
  33. //        This class requires AGAColors.cp to be present in your project
  34. //
  35. //        Version : 1.2
  36. //
  37. //        Change History (most recent first, date in US form : mm/dd/yy):
  38. //
  39. //                        06/30/96    ca        Public release of version 1.2
  40. //                        06/24/96    ca        Added StColorPenState::Normalize call to prevent influence on our colors
  41. //                        06/05/96    ca        Added RegisterClass method to ease registry
  42. //                                                        Increased version to 1.2
  43. //                        05/17/96    ca        Increased version to 1.1
  44. //                                                        Added copy constructor
  45. //                                                        Added "on the fly" constructor
  46. //                                                        Replaced UEnvironment::HasFeature(env_SupportsColor) with PaneInColor
  47. //                                                        Added change history
  48. //                        04/22/96    ca        class made available by Christophe ANDRES <chrisoft@calva.net>
  49. //                                                        (version 1.0)
  50. //
  51. //        To Do:
  52. //
  53.  
  54. #include "LAGASeparator.h"
  55.  
  56. #include <UEnvironment.h>
  57. #include <UTextTraits.h>
  58. #include "AGAColors.h"
  59.  
  60. //    begin    <06/05/96    ca>
  61. void LAGASeparator::RegisterClass ()
  62.  
  63. {
  64.     URegistrar::RegisterClass(LAGASeparator::class_ID, (ClassCreatorFunc)LAGASeparator::CreateAGASeparatorStream);
  65. }
  66. //    end    <06/05/96    ca>
  67.  
  68. LAGASeparator* LAGASeparator::CreateAGASeparatorStream (LStream* inStream)
  69.  
  70. {
  71.     return (new LAGASeparator(inStream));
  72. }
  73.  
  74. //-------Constructors-------------------------------------------------------------------------------------------------
  75.  
  76. LAGASeparator::LAGASeparator (LStream *inStream) : LPane(inStream)
  77.  
  78. {
  79. }
  80.  
  81. //    begin <05/17/96    ca>
  82. LAGASeparator::LAGASeparator (const LAGASeparator &inOriginal) : LPane(inOriginal)
  83.  
  84. {
  85. }
  86.  
  87. LAGASeparator::LAGASeparator (const SPaneInfo &inPaneInfo) : LPane(inPaneInfo)
  88.  
  89. {
  90. }
  91. //    end <05/17/96    ca>
  92.  
  93. //-------Drawers----------------------------------------------------------------------------------------------------
  94.  
  95. void LAGASeparator::DrawSelf ()
  96.  
  97. {
  98.     StColorPenState theState;
  99.     Boolean hasColor = ::PaneInColor(this);                                    //    <05/17/96    ca>
  100.     Rect frame;
  101.     
  102.     theState.Normalize();                                                                        //    <06/24/96    ca>
  103.     CalcLocalFrameRect(frame);
  104.     if (hasColor)
  105.         ::RGBForeColor(&gAGAColorArray[7]);
  106.     else
  107.         ::PenPat(&qd.gray);
  108.     if ((frame.bottom - frame.top) > (frame.right - frame.left))
  109.         {
  110.             //    vertical separator
  111.             ::MoveTo(frame.left, frame.top);
  112.             ::LineTo(frame.left, frame.bottom - 2);
  113.             if (hasColor)
  114.                 {
  115.                     ::ForeColor(whiteColor);
  116.                     ::MoveTo(frame.left + 1, frame.top + 1);
  117.                     ::LineTo(frame.left + 1, frame.bottom - 1);
  118.                 }
  119.         }
  120.     else
  121.         {
  122.             //    horizontal separator
  123.             ::MoveTo(frame.left, frame.top);
  124.             ::LineTo(frame.right - 2, frame.top);
  125.             if (hasColor)
  126.                 {
  127.                     ::ForeColor(whiteColor);
  128.                     ::MoveTo(frame.left + 1, frame.top + 1);
  129.                     ::LineTo(frame.right - 1, frame.top + 1);
  130.                 }
  131.         }
  132. }
  133.  
  134.